home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power Programmierung
/
Power-Programmierung (Tewi)(1994).iso
/
magazine
/
drdobbs
/
c_spec
/
execute
/
diskinfo.c
< prev
next >
Wrap
C/C++ Source or Header
|
1986-02-20
|
1KB
|
65 lines
#include <stdio.h>
#include "mydos.h"
/*
* Copyright (C) 1986, Allen I. Holub. All rights reserved.
*/
extern void mydos( REGS *); /* In mydos.asm */
diskinfo( disk, sec_per_cluster, bytes_per_sec, avail_clusters, tot_clusters)
int disk; /* 0=current, 1=a:, 2=b: etc. */
unsigned *sec_per_cluster, /* # sectors in a cluster */
*bytes_per_sec, /* # bytes in a sector */
*avail_clusters, /* # cluster available for writting */
*tot_clusters; /* Total # clusters on the disk */
{
/* Return 0 on failure (bad disk code, etc.) 1 on success
* (and fill the last 4 parameters with the correct info).
*/
REGS reg;
gregs( ® );
reg.h.ah = 0x36; /* Get Disk Free Space */
reg.h.dl = disk;
mydos( ® );
if( reg.x.ax == -1 )
return 0;
else
{
*sec_per_cluster = reg.x.ax ;
*avail_clusters = reg.x.bx ;
*bytes_per_sec = reg.x.cx ;
*tot_clusters = reg.x.dx ;
}
return 1;
}
/*----------------------------------------------------------------------*/
#ifdef DEBUG
main()
{
unsigned spc, ac, bps, tc;
if( !diskinfo( 0, &spc, &bps, &ac, &tc ) )
printf("*** ERROR ***\n");
else
{
printf("%6d sec/cluster\n", spc );
printf("%6d available clusters\n", ac );
printf("%6d bytes per sector\n", bps );
printf("%6d total clusters\n", tc );
}
}
#endif